package com.kerrykidz.scmstock.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.kerrykidz.scminvoicing.dao.model.GblScmPrdEntity;
import com.kerrykidz.scminvoicing.dao.model.ScmOutStgEntity;
import com.kerrykidz.scminvoicing.dao.model.ScmOutstgPrdEntity;
import com.kerrykidz.scminvoicing.dao.model.ScmPrdStgEntity;
import com.rdp.framework.exception.RDPException;

/**
 * 
 * @ClassName: IStockGoodsOutService
 * @description: 商品出库
 * @author: huanjiang
 * @date: 2014年8月20日 上午11:03:00
 * @version: V1.0
 * 
 */
public interface IStockGoodsOutService {

	/**
	 * 
	 * 
	 * @Title: findscmOutStg
	 * @Description: 出库记录表查询
	 * @param: @return
	 * @date: 2014年8月20日
	 * @return: List<ScmOutStgEntity>
	 * @throws
	 * 
	 */
	public ScmOutStgEntity findscmOutStg(ScmOutStgEntity scmOutStg)
			throws RDPException;

	/**
	 * 
	 * @Title: updatefindscmOutStgForDel
	 * @Description: 更新出库单删除标记
	 * @param: pkOutstgId 出库单编号
	 * @date: 2014年8月21日
	 * @return: void
	 * @throws RDPException
	 * 
	 */
	void updatefindscmOutStgForDel(String pkOutstgId) throws RDPException;

	/**
	 * 
	 * 
	 * @Title: rollBackForStockOut
	 * @Description:删除出库单后，回滚更新商品库存
	 * @param: OutstgId 出库单号
	 * @param： scmPrdStg 商品库存表实例
	 * @date: 2014年8月21日
	 * @return: boolean
	 * @throws RDPException
	 * 
	 */
	boolean rollBackForStockOut(String pkOutstgId, ScmPrdStgEntity scmPrdStg)
			throws RDPException;

	/**
	 * 
	 * @Title: stockGoodsOut
	 * @Description: 商品出库
	 * @param: scmOutStg 出库记录表
	 * @param: scmOutstgPrd 出库商品明细表
	 * @date: 2014年8月26日
	 * @return: boolean
	 * @throws RDPException
	 * 
	 */
	void doStockGoodsOut(ScmOutStgEntity scmOutStg, String contents)
			throws RDPException;

	/**
	 * 
	 * @Title: findScmOutStgDetail
	 * @Description: 出库清单，根据出库单获得对应的出库单信息，包括门店名称
	 * @param pkOutstgId
	 *            出库单号
	 * @throws RDPException
	 * @date: 2014年8月29日
	 * @return:ScmOutStgEntity
	 */
	ScmOutStgEntity findScmOutStgDetail(@Param("pkOutstgId") String pkOutstgId)
			throws RDPException;

	/**
	 * 
	 * @Title: findProductListForStock
	 * @Description: 通过商品id和门店id，获得对应商品信息
	 * @param entity
	 * @throws RDPException
	 * @date: 2014年8月29日
	 * @return:List<GblScmPrdEntity>
	 */
	public List<GblScmPrdEntity> findProductListForStock(GblScmPrdEntity entity)
			throws RDPException;

	/**
	 * 
	 * @Title: getProductListForDetail
	 * @Description: 获得出库清单中商品列表信息
	 * @param fkOutstgId
	 *            出库单id
	 * @param fkBranId
	 *            门店id
	 * @throws RDPException
	 * @date: 2014年9月1日
	 * @return:List<GblScmPrdEntity>
	 */
	public List<ScmOutstgPrdEntity> getProductListForDetail(String fkOutstgId) throws RDPException;

}
